/*
 * @Author       : Darcy
 * @Date         : 2021-04-23 21:45:32
 * @LastEditors  : Darcy
 * @LastEditTime : 2021-04-23 22:30:26
 * @FilePath     : \HelloWorld\Cpp\TXExersice\06\Automobile.h
 * @Description  : <(￣︶￣)↗[GO!]
 * https://github.com/Darcy-Zhang
 */

#ifndef INC_06_AUTOMOBILE_H
#define INC_06_AUTOMOBILE_H

#include "Park.h"
#include <string>

class Park;

class Automobile {
  public:
    explicit Automobile(std::string license);

    std::string showLicensePlate();

    [[nodiscard]] double showFee() const;

    void enter(Park &park);

    void leave(Park &park);

  protected:
    std::string licensePlate;
    double fee;
};

class Truck : public Automobile {
  public:
    Truck(const std::string &license, double load);

  protected:
    double loadCapacity;
};

class Car : public Automobile {
  public:
    Car(const std::string &license, std::string Brand);

  protected:
    std::string brand;
};

class Bus : public Automobile {
  public:
    Bus(const std::string &license, int carry);

  protected:
    int passengerCarryingCapacity;
};

#endif // INC_06_AUTOMOBILE_H
